<?php

/**
 * \file
 * Classe `Date`.
 */

/**
 * Membre de formulaire date.
 * La requete se fera avec un encadrement.
 */
namespace pilar\SearchFormMembers /* \cond */ ; /* \endcond */
{

/**
 * Membre date, la requête se fera avec un encadrement.
 *
 * \since 16/03/2009
 * \author Dirk MARSKI <dirk.marski@gmail.com>
 */
class Date extends \pilar\Forms\SearchFormMember {


protected function load() {
 parent::load();

 $this->addFormMember(
   new \pilar\SimpleFormMembers\Date(array(
   'name' => $this->_entityMember->get('name').'Inf',
   'label' => $this->_entityMember->get('caption').' (après)'
  ))
 );
 $this->addFormMember(
  new \pilar\SimpleFormMembers\Date(array(
   'name' => $this->_entityMember->get('name').'Sup',
   'label' => $this->_entityMember->get('caption').' (avant)'
  ))
 );
}


/**
 * Génère la requête sql du champs 'value' du membre d'entité si la valeur
 * récupérée est valide.
 *
 * \param $objects ObjectCollection pour la requête.
 * \since 10/03/2009
 */
protected function createSqlExpressions($objects, $value) {
 $valueChanged = false;

 $fm = $this->formMember($this->_entityMember->get('name').'Inf');
 $cont = false;
 if ($value == '' && !$fm->isEmpty()) {
  $value = $this->_entityMember->getFieldValueFromFormMember($fm);
  $valueChanged = true;
  $cont = true;
	} else if ($value != '') {
  $cont = true;
 }
 if ($cont) {
  // TODO: vérifier la compatibilité avec 'notEmpty' ...
  if ($fm->acceptsValue($value, 'value')) {
   $this->addSqlExp(
    \gt(
					$objects->member($this->_entityMember->get('name'))->value,
     \cst($value)
   ));
  }
 }

 if ($valueChanged) {
  $value = '';
 }
 $fm = $this->formMember($this->_entityMember->get('name').'Sup');
 $cont = false;
 if ($value == '' && !$fm->isEmpty()) {
  $value = $this->_entityMember->getFieldValueFromFormMember($fm);
  $cont = true;
	} else if ($value != '') {
  $cont = true;
 }
 if ($cont) {
  // TODO: vérifier la compatibilité avec 'notEmpty' ...
  if ($fm->acceptsValue($value, 'value')) {
   $this->addSqlExp(
    \lt(
					$objects->member($this->_entityMember->get('name'))->value,
     \cst($value)
   ));
  }
 }
}


} // Class.

} // Namespace.

?>
